Amazon EventBridgeルールでAWS Step Functionsステートマシンを定期実行する
こんにちは、CX事業本部 IoT事業部の若槻です。
今回は、Amazon EventBridgeルールでAWS Step Functionsステートマシンを定期実行してみました。
Amazon EventBridgeとは
Amazon EventBridge は、コードを作成せずに、AWS のサービス、独自のアプリケーション、サービス型ソフトウェア (SaaS) アプリケーションのデータの変更にリアルタイムにアクセスできるサービスです。使用を開始するには、Amazon EventBridge コンソールでイベントソースを選択し、AWS Lambda、Amazon SNS、Amazon Kinesis Data Firehose といった数々の AWS のサービスの中からターゲットを選択します。Amazon EventBridge により、イベントがほぼリアルタイムで自動的に送信されます。
やってみた
AWSマネジメントコンソールと、AWS CDKによる方法それぞれでやってみました。
マネジメントコンソールの場合
下記の作成済みのステートマシンMyStateMachine
を実行対象にします。
EventBridgeのマネジメントコンソールを開き、[ルールの作成]をクリックします。
[ルールを作成]ページが開きます。ルール名を指定し、[パターンを定義]で定期実行のスケジュールを指定します。[スケジュール]-[固定速度ごと]で今回は5分
とします。
[ターゲットを選択]で実行対象のステートマシンを指定します。[ターゲット]でStep Functions ステートマシン
を選択し、対象のステートマシン(MyStateMachine
)を指定します。[作成]をクリックしてルールを作成します。
イベントルールを作成できました。
ステートマシンが5分毎に実行できていますね。
AWS CDKの場合
CDKコードは下記のようになります。
import * as cdk from '@aws-cdk/core'; import * as sfn from '@aws-cdk/aws-stepfunctions'; import * as events from '@aws-cdk/aws-events'; import * as targets from '@aws-cdk/aws-events-targets'; export class AwsCdkAppStack extends cdk.Stack { constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); //ステートマシン const stateMachine = new sfn.StateMachine(this, 'sampleStateMachine', { stateMachineName: 'sampleStateMachine', definition: new sfn.Pass(this, 'pass', {}), }); //イベントルール new events.Rule(this, 'sampleRule', { ruleName: 'sampleRule', schedule: events.Schedule.rate(cdk.Duration.minutes(5)), //5分毎に実行 targets: [new targets.SfnStateMachine(stateMachine)], }); } }
cdk deploy
してリソースをデプロイします。
作成されたステートマシンを見ると、5分毎に実行できていますね。
イベントルールのスケジュール
イベントルールのスケジュールの指定方法には、RateとCronがあります。今回はRateを指定しましたが、Cronを使うことにより更に複雑なスケジュール条件を表現できます。詳しくは下記をご覧ください。
参考
以上